package com.asiainfo_linkage.mvc.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.nutz.dao.pager.Pager;
import org.nutz.ioc.annotation.InjectName;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;

import com.asiainfo_linkage.model.Sample;
import com.asiainfo_linkage.service.SampleService;
import com.asiainfo_linkage.vo.SampleQuery;

@IocBean
@InjectName
public class SampleAction {
	
	@Inject
	private SampleService sampleService;
	
	public void setSampleService(SampleService sampleService) {
		this.sampleService = sampleService;
	}
	
	/**
	 * 进入添加数据页面。
	 */
	@At("sample/add")
	@Ok(value = "jsp:sample.add")
	public void add() {
		
	}
	
	/**
	 * 保存添加数据页面,保存完毕后跳转到列表页面。
	 */
	@At("sample/save")
	@Ok(value = "redirect:/sample/list.nutz")
	public void save(@Param("..") Sample sample) {
		//存储数据。
		this.sampleService.dao().insert(sample);
	}
	
	/**
	 * 进入编辑数据页面。
	 */
	@At("sample/edit")
	@Ok(value = "jsp:sample.edit")
	public Sample edit(long id) {
		//查询。
		return this.sampleService.dao().fetch(Sample.class, id);
	}
	
	/**
	 * 保存编辑数据页面,保存完毕后跳转到列表页面。
	 */
	@At("sample/update")
	@Ok(value = "redirect:/sample/list.nutz")
	public void update(@Param("..") Sample sample) {
		//存储数据。
		this.sampleService.dao().update(sample);
	}
	
	/**
	 * 删除数据，删除完毕后跳转到列表页面。
	 */
	@At("sample/delete")
	@Ok(value = "redirect:/sample/list.nutz")
	public void delete(long id) {
		//删除。
		this.sampleService.dao().delete(Sample.class, id);
	}

	/**
	 * 数据列表。
	 * @param pager
	 * @return
	 */
	@At("sample/list")
	@Ok(value = "jsp:sample.list")
	public Map<String, Object> list(@Param("::sampleQuery.") SampleQuery sampleQuery, @Param("::pager.") Pager pager) {
		Map<String, Object> map = new HashMap<String, Object>();
		List<Sample> list = sampleService.pageQuery(sampleQuery, pager);
		map.put("list", list);
		map.put("pager", pager);
		map.put("sampleQuery", sampleQuery);
		return map;
	}

}
